1. Field of the Invention
The present invention relates to data obfuscation and more specifically to obfuscation by means of a modulus operation.
2. Introduction
Computer software is first written as source code which is readable by a person trained to understand programming languages. Generally that source code is then compiled to object code that contains a list of instructions controlling what a computer does. Unfortunately for commercial software vendors who wish to enforce licensing or Digital Rights Management (DRM) provisions, malicious or mischievous individuals with enough time and resources can reverse engineer critical portions of the object code. One technique to reverse engineer object code is to load the executable into memory and examine the memory contents with a piece of software called a debugger to locate the critical portions of software enforcing the restrictions. Once the proper portions of object code are located and reverse engineered, the software may be modified to perform in a manner not anticipated by the software vendor, potentially bypassing DRM or licensing restrictions, but also potentially causing great harm or injury.
In addition to protecting executable instructions compiled from source code, a content provider or software publisher may want to protect data from being copied or played without authorization, but still want the content to be accessible where there is authorization. DRM and software protection schemes in general work by means of code protection, security by design, code obfuscation, code hardening, and other methods. Even a blend of these approaches is often insufficient to keep out a determined “hacker” or “cracker”. Such problems are exacerbated when attempting to secure code on a client device which a user has complete physical control over and which must interact securely with a server. In many situations, both the client and the server must perform the same operation with different levels of security such as a dedicated secure server and a portable media player. A designer may want to protect the processes performed by the portable media player from observation by a malicious user while still allowing the same operation to occur on a server without obfuscation and/or without a performance penalty. Accordingly, what is needed in the art is an improved way to store data and/or code on a client device and on a server while making the data and/or code difficult to access without proper authorization.